home *** CD-ROM | disk | FTP | other *** search
/ Shareware Grab Bag / Shareware Grab Bag.iso / 011 / memprnt.arc / TEST.PAS < prev   
Pascal/Delphi Source File  |  1985-09-05  |  17KB  |  444 lines

  1. program test;
  2.  
  3. const
  4.    copyright = 'COPYRIGHT (C) 1985, MPM ENTERPRISES, INC.    ';
  5.    address   = '                    306 Park Avenue          ';
  6.    city_state= '                    Wilmette, Illinois  60091';
  7.    esc = #27;
  8.    nul = #0;
  9.    one = #1;
  10.  
  11.    fx_control: set of byte =          {control characters for the FX printers}
  12.       [7,8,9,
  13.        10,11,12,13,14,15,17,18,19,
  14.        20,24];
  15.  
  16.    mx_control: set of byte =          {control characters for the MX printers}
  17.       [7,8,9,
  18.        10,11,12,13,14,15,18,
  19.        20];
  20.  
  21.    rx_control: set of byte =          {control characters for the RX printers}
  22.       [7,8,9,
  23.        10,11,12,13,14,15,18,
  24.        20];
  25.  
  26.    fx_escape: set of byte =          {escape codes for the FX printers}
  27.      [14,15,
  28.       33,38,
  29.       42,45,48,49,
  30.       51,52,
  31.       65,66,67,68,69,
  32.       71,74,75,76,77,
  33.       81,82,83,85,87,89,
  34.       90,94,98,
  35.       106,108,
  36.       112,115];
  37.  
  38.    mx_escape: set of byte =          {escape codes for the MX printers}
  39.      [45,48,49,
  40.       51,52,
  41.       65,67,68,69,
  42.       71,74,75,76,
  43.       81,83,85,87];
  44.  
  45.    rx_escape: set of byte =          {escape codes for the RX printers}
  46.      [42,45,48,49,
  47.       51,52,
  48.       65,67,69,
  49.       71,74,75,76,77,
  50.       81,82,83,85,87,89,
  51.       90,
  52.       101,102,108,
  53.       115];
  54.  
  55. var
  56.    i,j,k,l:integer;
  57.    ii,tt  : char;
  58.    test_escape,test_control: set of byte;
  59.  
  60. procedure print_chars;   {prints the 240 characters that can be printed}
  61. var i:integer;           {by MPM-print}
  62. begin
  63.    for i:=1 to 255 do
  64.       if (i in [1..6,16,21..23,25,26,28..255]) then
  65.           write(lst,char(i));
  66.    writeln(lst);
  67.    writeln(lst);
  68. end;
  69.  
  70. procedure do_control_codes(i:integer);   {test the single-byte control codes}
  71. begin
  72.    gotoxy(1,15);
  73.    clreol;
  74.    write('testing control code ',i);
  75.  
  76.    case i of
  77.      7: writeln(lst,'BELL (chr$(7))',char(7));
  78.      8: begin
  79.            write(lst,'BACKSPACE (chr$(8))');
  80.            for j:=1 to 19 do write(lst,char(8));
  81.            writeln(lst,'/\/\/\/\/');
  82.         end;
  83.      9: begin
  84.            for j:=1 to 5 do write(lst,'TAB (chr$(9))',char(9));
  85.            writeln(lst);
  86.         end;
  87.      10: for j:=1 to 5 do write(lst,'LINE FEED (chr$(10))',char(10));
  88.      11: for j:=1 to 5 do write(lst,'VERTICAL TAB (chr$(11))',char(11));
  89.      13: begin
  90.            for j:=1 to 5 do write(lst,'CARRIAGE RETURN (chr$(13))',char(13));
  91.            writeln(lst);
  92.          end;
  93.      14: begin
  94.             writeln(lst,char(14),'ONE LINE EXPANDED MODE ON (chr$(14))');
  95.             writeln(lst);
  96.             print_chars;
  97.             writeln(lst,'ONE LINE EXPANDED MODE OFF (chr$(20))',char(20));
  98.          end;
  99.      15: begin
  100.             writeln(lst,'SHIFT IN (COMPRESSED MODE ON) (chr$(15))',char(15));
  101.             writeln(lst);
  102.             print_chars;
  103.             writeln(lst,'COMPRESSED MODE OFF',char(18),'(chr$(18))');
  104.          end;
  105.    end;  {case statement}
  106.  
  107.    if (i in [7,8,9,10,11,13,14,15]) then    {filter inadvertent control codes}
  108.    begin
  109.       writeln(lst);
  110.       writeln(lst);
  111.    end;
  112.  
  113. end;   {do_control_codes}
  114.  
  115. procedure clear_escape_codes(e_code:integer);    {reset the printer from}
  116. begin                                            {whatever mode was set}
  117.    tt:=char(e_code);                             {by do_escape_codes}
  118.  
  119.    case e_code of
  120.       14: writeln(lst,char(20));
  121.       15: writeln(lst,'COMPRESSED MODE OFF ',char(18),'(CHR$(18))');
  122.       33: begin
  123.              writeln(lst,'MASTER PRINT MODE SELECT');
  124.              writeln(lst,'(choosing Pica, (ESC 33 0)',
  125.                            esc,tt,nul);
  126.           end;
  127.       38: writeln(lst,'SELECTING the ROM character set (ESC 37 0 0)',
  128.                   esc,char(37),nul,nul);
  129.       45: writeln(lst,esc,tt,nul,'NON-UNDERLINE MODE (ESC 45 0)');
  130.       48: writeln(lst,'RESET LINE SPACING TO DEFAULT 1/6 INCH (12 DOTS)',
  131.                       ' (ESC 50)',esc,char(50));
  132.       49: writeln(lst,'RESET LINE SPACING TO DEFAULT 1/6 INCH (12 DOTS)',
  133.                       ' (ESC 50)',esc,char(50));
  134.       51: writeln(lst,'RESET LINE SPACING TO DEFAULT 1/6 INCH (12 DOTS)',
  135.                       ' (ESC 50)',esc,char(50));
  136.       52: writeln(lst,esc,char(53),'TURN THE ITALIC CHARACTER SET OFF',
  137.                                    ' (ESC 53)');
  138.       65: writeln(lst,'RESET LINE SPACING TO DEFAULT 1/6 INCH (12 DOTS)',
  139.                       ' (ESC 50)',esc,char(50));
  140.       69: writeln(lst,'TURN EMPHASIZED MODE OFF (ESC 70)',esc,char(70));
  141.       71: writeln(lst,'TURN DOUBLE STRIKE MODE OFF (ESC 72)',esc,char(72));
  142.       77: writeln(lst,'TURN ELITE MODE OFF (ESC 80)',esc,char(80));
  143.       81: writeln(lst,esc,tt,char(80),
  144.                   'RESET THE COLUMN WIDTH TO 80 (ESC 81 80)');
  145.       82: begin
  146.              writeln(lst,'RESET THE INTERNATIONAL CHARACTER SET');
  147.              writeln(lst,'to the USA set (ESC 82 0)',esc,tt,nul);
  148.              writeln(lst);
  149.              print_chars;
  150.              writeln(lst);
  151.           end;
  152.       85: writeln(lst,'TURN UNIDIRECTIONAL MODE OFF (ESC 85 0)',
  153.                   esc,tt,nul);
  154.       87: writeln(lst,'TURN EXPANDED MODE OFF (ESC 87 0)',
  155.                   esc,tt,nul);
  156.      108: begin
  157.              writeln(lst,'RESET LEFT MARGIN TO 0 CHARACTERS (ESC 108 10)');
  158.              writeln(lst,esc,tt,nul);
  159.              writeln(lst);
  160.           end;
  161.      112: writeln(lst,'TURN PROPORTIONAL MODE OFF (ESC 112 0)',
  162.                   esc,tt,nul);
  163.      115: writeln(lst,'HALF-SPEED MODE OFF (ESC 115 0)',
  164.                   esc,tt,nul);
  165.    end;   {case statement}
  166.  
  167.    if (e_code in [15,33,38,45,48,49,51,52,65,69,71,77,81,85,87,112,115]) then
  168.    begin                       {filter inadvertent escape codes}
  169.       writeln(lst);
  170.       writeln(lst);
  171.    end;
  172.  
  173. end;   {clear_escape_codes}
  174.  
  175. procedure do_escape_codes(e_code:integer);
  176. begin
  177.    gotoxy(1,15);
  178.    clreol;
  179.    write('testing escape code ',e_code);
  180.    tt:=char(e_code);
  181.  
  182.    case e_code of
  183.       14: writeln(lst,esc,tt,'ONE LINE EXPANDED MODE ON (ESC 14)');
  184.       15: writeln(lst,'SHIFT IN (COMPRESSED MODE ON) (ESC 15)',esc,tt);
  185.       33: begin
  186.              writeln(lst,'MASTER PRINT MODE SELECT');
  187.              writeln(lst,'(choosing Expanded Compressed, (ESC 33 36)',
  188.                            esc,tt,char(36));
  189.           end;
  190.       38: begin
  191.              writeln(lst,'USING THE DOWNLOAD CHARACTER SET');
  192.              writeln(lst,'*** NOTE ***');
  193.              writeln(lst,'switch 1-5 on the FX printer must be',
  194.                          ' set to OFF for the download set to work');
  195.              writeln(lst);
  196.              writeln(lst,'COPYING CHARACTER SET FROM ROM TO THE DOWNLOAD RAM',
  197.                          ' (ESC 58 0 0 0)',esc,char(58),nul,nul,nul);
  198.              writeln(lst);
  199.              writeln(lst,'REPLACING THE "A" WITH A MODIFIED CHARACTER',
  200.                          ' (ESC 38 0 65 65 +12 character bytes) ',
  201.                          esc,char(38),nul,char(65),char(65),char(139),
  202.                          char(7),char(8),char(16),char(36),char(64),
  203.                          char(36),char(16),char(8),char(7),nul,nul);
  204.              writeln(lst);
  205.              writeln(lst,'SELECTING the download character set (ESC 37 1 0)',
  206.                      esc,char(37),one,nul);
  207.           end;
  208.       42: begin
  209.              writeln(lst,'MASTER GRAPHICS MODE SELECTION');
  210.              writeln(lst,'printing a graphics bar using quad density',
  211.                      ' (ESC 42 3 120 0 +120 character bytes)');
  212.              write(lst,esc,tt,char(3),char(120),nul);
  213.              for j:=1 to 60 do write(lst,char(127),char(42));
  214.              writeln(lst);
  215.              writeln(lst);
  216.           end;
  217.       45: writeln(lst,'UNDERLINE MODE (ESC 45 1)',esc,tt,one);
  218.       48: writeln(lst,'SET LINE SPACING TO 1/8 INCH (9 DOTS) (ESC 48)',
  219.                   esc,tt);
  220.       49: writeln(lst,'SET LINE SPACING TO 7/72 INCH (7 DOTS) (ESC 49)',
  221.                   esc,tt);
  222.       51: begin
  223.              writeln(lst,'SET LINE SPACING TO N/216 INCH');
  224.              writeln(lst,'using n=63 (ESC 51 63)',esc,tt,char(63));
  225.           end;
  226.       52: writeln(lst,'TURN THE ITALIC CHARACTER SET ON (ESC 52)',
  227.                   esc,tt);
  228.       65: begin
  229.              writeln(lst,'SET LINE SPACING TO n/72 INCH (n DOTS)');
  230.              writeln(lst,'using 36 dots (ESC 65 36)',esc,tt,char(36));
  231.           end;
  232.       66: begin
  233.              writeln(lst,'SET UP TO 16 VERTICAL TABS');
  234.              writeln(lst,'using 4 tab settings at 5,11,18, and 26 ',
  235.                      '(ESC 66 5 11 18 26 0)',esc,tt,char(5),char(11),
  236.                      char(18),char(26),nul);
  237.              writeln(lst);
  238.              writeln(lst,'SETTING TOP OF FORM');
  239.              write(lst,char(12));
  240.              do_control_codes(11);
  241.           end;
  242.       67: begin
  243.              write(lst,'GO TO TOP OF FORM',char(12),esc,tt,char(30));
  244.              writeln(lst,'SET FORM LENGTH IN LINES');
  245.              writeln(lst,'set to 30 lines (ESC 67 30)');
  246.              writeln(lst,'go to "top of form"');
  247.              write(lst,char(12),esc,tt,nul,char(6));
  248.              writeln(lst,'SET FORM LENGTH IN INCHES');
  249.              writeln(lst,'set to 6 lines (ESC 67 6)');
  250.              writeln(lst);
  251.              write(lst,'go to "top of form" and reset form length to 66 lines',
  252.                    char(12),esc,tt,char(66));
  253.           end;
  254.       68: begin
  255.              writeln(lst,'SET UP TO 32 HORIZONTAL TABS');
  256.              writeln(lst,'using 6 tab settings at 18,34,48,60, and 70 ',
  257.                      '(ESC 68 18 34 48 60 70 0)',esc,tt,char(18),char(34),
  258.                      char(48),char(60),char(70),nul);
  259.              writeln(lst);
  260.              do_control_codes(9);
  261.              writeln(lst);
  262.           end;
  263.       69: writeln(lst,'TURN EMPHASIZED ON MODE (ESC 69)',esc,tt);
  264.       71: writeln(lst,'TURN DOUBLE STRIKE MODE ON (ESC 71)',esc,tt);
  265.       74: begin
  266.              writeln(lst,'FORCE AN IMMEDIATE LINE FEED OF n/216 INCHES');
  267.              write(lst,'use n=188 (ESC 74 188)',esc,tt,char(188));
  268.              write(lst,'188/216 inch linefeed complete');
  269.              writeln(lst);
  270.           end;
  271.       75: begin
  272.              writeln(lst,'NORMAL GRAPHICS MODE');
  273.              writeln(lst,'printing a graphics bar',
  274.                      ' (ESC 75 120 0 +120 character bytes)');
  275.              write(lst,esc,tt,char(120),nul);
  276.              for j:=1 to 60 do write(lst,char(127),char(42));
  277.              writeln(lst);
  278.              writeln(lst);
  279.           end;
  280.       76: begin
  281.              writeln(lst,'LOW-SPEED DOUBLE-DENSITY GRAPHIC MODE');
  282.              writeln(lst,'printing a graphics bar',
  283.                      ' (ESC 76 120 0 +120 character bytes)');
  284.              write(lst,esc,tt,char(120),nul);
  285.              for j:=1 to 60 do write(lst,char(127),char(42));
  286.              writeln(lst);
  287.              writeln(lst);
  288.           end;
  289.       77: writeln(lst,'TURN ELITE MODE ON (ESC 77)',esc,tt);
  290.       81: begin
  291.              writeln(lst,'SET THE COLUMN WIDTH  (RIGHT MARGIN)');
  292.              writeln(lst,esc,tt,char(60),'set to 60 columns (ESC 81 60)');
  293.           end;
  294.       82: begin
  295.              writeln(lst,'SELECT AN INTERNATIONAL CHARACTER SET');
  296.              writeln(lst,'use the Swedish set (ESC 82 5)',esc,tt,char(5));
  297.           end;
  298.       83: begin
  299.              writeln(lst,'TURN SCRIPT MODE ON (TO SUPER- OR SUBSCRIPT)');
  300.              writeln(lst);
  301.              write(lst,esc,tt,nul,'SUPERSCRIPT (ESC 83 0)',esc,char(84),
  302.                   ' NORMAL ',esc,tt,one,'SUBSCRIPT (ESC 83 1)',
  303.                   esc,char(84));
  304.              writeln(lst);
  305.              writeln(lst);
  306.           end;
  307.       85: writeln(lst,'TURN UNIDIRECTIONAL MODE ON (ESC 85 1)',
  308.                   esc,tt,one);
  309.       87: writeln(lst,'TURN EXPANDED MODE ON (ESC 87 1)',esc,tt,one);
  310.       89: begin
  311.              writeln(lst,'HIGH-SPEED DOUBLE-DENSITY GRAPHICS');
  312.              writeln(lst,'printing a graphics bar',
  313.                      ' (ESC 89 120 0 +120 character bytes)');
  314.              write(lst,esc,tt,char(120),nul);
  315.              for j:=1 to 60 do write(lst,char(127),char(42));
  316.              writeln(lst);
  317.              writeln(lst);
  318.           end;
  319.       90: begin
  320.              writeln(lst,'QUADRUPLE DENSITY GRAPHICS MODE');
  321.              writeln(lst,'printing a graphics bar',
  322.                      ' (ESC 90 120 0 +120 character bytes)');
  323.              write(lst,esc,tt,char(120),nul);
  324.              for j:=1 to 60 do write(lst,char(127),char(42));
  325.              writeln(lst);
  326.              writeln(lst);
  327.           end;
  328.       94: begin
  329.              writeln(lst,'9-PIN GRAPHICS MODE');
  330.              writeln(lst,'printing a single density graphics bar',
  331.                      ' (ESC 94 0 120 0 +120 character bytes)');
  332.              write(lst,esc,tt,nul,char(120),nul);
  333.              for j:=1 to 60 do write(lst,char(127),char(255),
  334.                                      char(42),char(255));
  335.              writeln(lst);
  336.              writeln(lst);
  337.           end;
  338.       98: begin
  339.              writeln(lst,'SET VERTICAL TAB FOR CHANNEL n');
  340.              writeln(lst,'setting channel 3,');
  341.              writeln(lst,'using 4 tab settings at 7,14,28, and 56 ',
  342.                      '(ESC 98 3 7 14 28 56 0)',esc,tt,char(3),char(7),char(14),
  343.                      char(28),char(56),nul);
  344.              writeln(lst);
  345.              writeln(lst,'CHOOSING CHANNEL 3 (ESC 47 3)',esc,char(47),char(3));
  346.              writeln(lst);
  347.              writeln(lst,'SETTING TOP OF FORM');
  348.              write(lst,char(12));
  349.              do_control_codes(11);
  350.              writeln(lst,'CHOOSING CHANNEL 0 (ESC 47 0)',esc,char(47),nul);
  351.              writeln(lst);
  352.           end;
  353.      101: begin
  354.              writeln(lst,'SET HORIZONTAL AND VERTICAL TAB INCREMENTS');
  355.              writeln(lst,'set horizontal tabs to 13 spaces (ESC 101 0 13)',
  356.                      esc,tt,nul,char(13));
  357.              writeln(lst);
  358.              do_control_codes(9);
  359.              writeln(lst,'set vertical tabs to 11 lines (ESC 101 1 11)',
  360.                      esc,tt,one,char(11));
  361.              do_control_codes(11);
  362.           end;
  363.      102: begin
  364.              writeln(lst,'PRINT SPACES OR LINE FEEDS W/O CARRIAGE RETURNS');
  365.              writeln(lst,'print 5 spaces',esc,tt,nul,char(5),'(ESC 102 0 5)');
  366.              writeln(lst,'print 13 line feeds',esc,tt,one,char(13),
  367.                      '(ESC 102 1 13)');
  368.              writeln(lst);
  369.           end;
  370.      106: begin
  371.              writeln(lst,'CAUSE IMMEDIATE REVERSE LINE FEED OF n/216 INCH');
  372.              writeln(lst,'use n=18 (1/2 line',esc,tt,char(18),' ESC 106 18)');
  373.              writeln(lst);
  374.              writeln(lst);
  375.           end;
  376.      108: begin
  377.              writeln(lst,'SET LEFT MARGIN TO n CHARACTERS');
  378.              writeln(lst,'use 10 characters (ESC 108 10)');
  379.              writeln(lst,esc,tt,char(10));
  380.           end;
  381.      112: writeln(lst,'TURN PROPORTIONAL MODE ON (ESC 112 1)',
  382.                   esc,tt,one);
  383.      115: writeln(lst,'HALF-SPEED MODE ON (ESC 115 1)',
  384.                   esc,tt,one);
  385.    end;   {case statement}
  386.  
  387.    if (e_code in [14,15,33,38,42,45,48,49,51,52,65,68,69,71,74,75,76,77,81,
  388.                   82,83,85,87,89,90,94,98,102,106,112,115]) then writeln(lst);
  389.    {filter inadvertent escape codes}
  390.  
  391. end;
  392.  
  393. begin                    {main program}
  394.    clrscr;
  395.    writeln('What printer do you have?');
  396.    writeln;
  397.    writeln('   1. Epson FX-80 or FX-100');
  398.    writeln('   2. Epson MX-80 or MX-100 or IBM Graphics');
  399.    writeln('   3. Epson RX-80 or RX-100');
  400.    writeln;
  401.    writeln('(Enter the number corresponding to your printer,');
  402.    write(' anything else to quit) ..............................');
  403.    read(kbd,ii);
  404.    write(ii);
  405.  
  406.    if (ii in ['1'..'3']) then
  407.    begin
  408.       case ii of
  409.          '1': begin                               {FX}
  410.                test_escape:=fx_escape;
  411.                test_control:=fx_control;
  412.             end;
  413.          '2': begin                               {MX}
  414.                test_escape:=mx_escape;
  415.                test_control:=mx_control;
  416.             end;
  417.          '3': begin                               {RX}
  418.                test_escape:=rx_escape;
  419.                test_control:=rx_control;
  420.             end;
  421.       end;   {case ii}
  422.  
  423.       for i:=7 to 31 do if (i in test_control) then
  424.          do_control_codes(i);
  425.  
  426.       for i:=14 to 115 do if (i in test_escape) then
  427.       begin
  428.          do_escape_codes(i);
  429.          if (not (i in [42,66..68,74..76,83,84,89,90,94,98,101,102,106]))
  430.             then print_chars;
  431.          clear_escape_codes(i);
  432.       end;
  433.  
  434.       writeln(lst);
  435.       writeln(lst);
  436.       writeln(lst);
  437.       write(lst,'PERFORMING FORM FEED AND MASTER RESET (CHR$(12) ESC 64)',
  438.             char(12),esc,char(64));
  439.       if (ii in ['2','3']) then write(lst,char(12));  {formfeed again for}
  440.                                                       {non FX printers}
  441.    end;
  442.  
  443. end.
  444.